// config
// 读取配置信息
package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"
)

// BackupConfigFileName 为后备配置文件，在本目录找不到的话，就找下面这个文件
const BackupConfigFileName = "./configs/apid.json"

// 程序配置信息
type Config struct {
	HttpPort       int
	DBUrl          string
	DBName         string
	DBUser         string //数据库用户名
	DBPwd          string //数据库密码
	HTTPS          bool   //HTTPS: true false
	ReceiverdURL   string
	CheckAccessURL string
	KeyFile        string
	CertFile       string
	ExportMaxCount int
	ExportDir      string
	ExportUrl      string
	AlertCall      struct {
		Host     string
		TaskUuid string
		FrameId  int
	}
	WeChat struct {
		OpenID string
		AppID  string
		Secret string
		Token  string
	}
	Redis struct {
		Url    string
		Expire int
		Key    string
	}
	FileUrl string // 导出文件的下载URL
	GeodUrl string // 地图API RUL
}

// 读取配置信息
func loadConfig(file string) (*Config, error) {
	if file == "" {
		file = os.Args[0] + ".json"
	}
	if _, err := os.Stat(file); os.IsNotExist(err) {
		file = BackupConfigFileName
	}
	buf, err := ioutil.ReadFile(file)
	if err != nil {
		return nil, err
	}

	var cfg Config
	err = json.Unmarshal(buf, &cfg)
	if err != nil {
		return nil, err
	}
	if cfg.ExportMaxCount == 0 {
		cfg.ExportMaxCount = 1000 //默认最大允许导出1000条纪录
	}
	if cfg.ExportDir == "" {
		cfg.ExportDir = "export"
	}
	if _, err = os.Stat(cfg.ExportDir); os.IsNotExist(err) {
		err = os.Mkdir(cfg.ExportDir, 0666)
	}
	if cfg.FileUrl == "" {
		cfg.FileUrl = fmt.Sprintf("%s:%d", "http://127.0.0.1", cfg.HttpPort)
	}
	if cfg.ExportUrl == "" {
		cfg.ExportUrl = cfg.FileUrl
	}
	if cfg.GeodUrl == "" {
		cfg.GeodUrl = "http://127.0.0.1:9701/coder"
	}

	return &cfg, err
}
